package mylab.starters.dag.task;

import java.util.Set;

import mylab.starters.dag.TaskResult;

@FunctionalInterface
public interface TaskExecutor<V> {

    /**
     * 执行任务
     *
     * @param logCallback          日志callback
     * @param parameters            外部参数
     * @param dependentTaskResults 所依赖的前置任务执行结果
     * @return 本任务执行结果
     * @throws Exception 任务执行过程中的异常
     */
    V execute(TaskLogCallback logCallback, Set<Object> parameters, Set<TaskResult<?>> dependentTaskResults) throws Exception;
}
